-
Notifications
You must be signed in to change notification settings - Fork 74
Matter Shell WebSocket #1990
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Matter Shell WebSocket #1990
Conversation
…tead of terminal I/O. Incudes a bare-bones webserver to make interaction more convenient
…d description of the capability in the README
tile.innerHTML = "<small>Node " + nodeId + "<br><span class=" + | ||
((status === "connected") ? "connected-node-status>" : "connecting-node-status>") + status + "</span></small>"; |
Check failure
Code scanning / CodeQL
Client-side cross-site scripting High
user-provided value
…off command UI. Console cleanup.
[TEMPERATURE]: (value, units = 'F') => { return (units === "F" ? (value / 100 * 9 / 5 + 32) : (value / 100)).toFixed(1) + '°' + units }, | ||
[PRESSURE]: (value, units = 'mb') => { return (value / 10000).toFixed(1) + units }, | ||
[HUMIDITY]: (value, units = '%') => { return (value / 100).toFixed(1) + units }, | ||
} |
Check notice
Code scanning / CodeQL
Semicolon insertion Note
the enclosing script
} | ||
element.id = `attr-${currentNode}/${currentEndpoint}/${matches[1]}`; | ||
if (!document.getElementById(`${currentEndpoint}-container-${currentNode}`)) { | ||
endpointContainer = document.createElement('div'); |
Check warning
Code scanning / CodeQL
Missing variable declaration Warning
endpointContainer = document.createElement('div'); | ||
endpointContainer.id = `${currentEndpoint}-container-${currentNode}`; | ||
endpointContainer.className = 'node-container'; | ||
endpointContainer.innerHTML = `<small>${currentEndpointType.replace('MA-', '')}<small><br>`; |
Check failure
Code scanning / CodeQL
Client-side cross-site scripting High
user-provided value
if (matches) { | ||
if (matches[4] == ON_OFF) styleContainer(matches[1], matches[3], matches[6]); | ||
else if (matches[4] == ILLUMINANCE || matches[4] == TEMPERATURE || matches[4] == PRESSURE || matches[4] == HUMIDITY || matches[4] == VOLTAGE) { | ||
const value = valueFormat[matches[4]] ? valueFormat[matches[4]](matches[6]) : matches[6]; |
Check failure
Code scanning / CodeQL
Unvalidated dynamic method call High
user-controlled
if (matches[4] == ON_OFF) styleContainer(matches[1], matches[3], matches[6]); | ||
else if (matches[4] == ILLUMINANCE || matches[4] == TEMPERATURE || matches[4] == PRESSURE || matches[4] == HUMIDITY || matches[4] == VOLTAGE) { | ||
const value = valueFormat[matches[4]] ? valueFormat[matches[4]](matches[6]) : matches[6]; | ||
document.getElementById(`attr-${matches[1]}/${matches[3]}/${matches[5]}`).innerHTML = `<small>${value}</small>`; |
Check failure
Code scanning / CodeQL
Client-side cross-site scripting High
user-provided value
|
||
matches = message.match(/Attribute value for (\w+) (\d+)\/(\d+)\/(\d+)\/(\w+): (.+)/); // from "read attribute" | ||
if (matches ) | ||
if ( matches[1] === "onOff" ) styleContainer(matches[2], matches[3], matches[6]) |
Check notice
Code scanning / CodeQL
Semicolon insertion Note
the enclosing function
matches = message.match(/Attribute value for (\w+) (\d+)\/(\d+)\/(\d+)\/(\w+): (.+)/); // from "read attribute" | ||
if (matches ) | ||
if ( matches[1] === "onOff" ) styleContainer(matches[2], matches[3], matches[6]) | ||
else console.log( `read of ${matches[1]} = ${matches[6]}` ) |
Check notice
Code scanning / CodeQL
Semicolon insertion Note
the enclosing function
matches = message.match(/Attribute value for (\w+) (\d+)\/(\d+)\/(\d+)\/(\w+): (.+)/); // from "read attribute" | ||
if (matches ) | ||
if ( matches[1] === "onOff" ) styleContainer(matches[2], matches[3], matches[6]) | ||
else console.log( `read of ${matches[1]} = ${matches[6]}` ) |
Check warning
Code scanning / CodeQL
Log injection Medium
Adding ability for Matter Shell to optionally utilize a WebSock instead of terminal I/O. Incudes a bare-bones web server to make interaction more convenient although using a full-featured web server is recommended. I have an html/javascript controller that utilizes this capability, but it is not included in this PR